This page contains plotly graphics.

library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.0.3
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.2     v purrr   0.3.4
## v tibble  3.0.3     v dplyr   1.0.2
## v tidyr   1.1.2     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.5.0
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(p8105.datasets)
library(plotly)
## Warning: package 'plotly' was built under R version 4.0.3
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout

loading Instacart data

data("instacart")


instacart = instacart %>% 
  select(reordered,add_to_cart_order,order_hour_of_day,days_since_prior_order,product_name,order_dow,aisle,department) %>%
  mutate(
    order_hour_of_day = as.factor(order_hour_of_day),
    order_dow = 
           as.factor(recode(order_dow,'0' = "Sun",'1' = "Mon",'2' = "Tue",'3' = "Wed",'4' = "Thu",'5' = "Fri",'6' = "Sat")))

line graph

On which day of the week and on what time of the day are the orders placed the most?

instacart %>%
  group_by(order_dow) %>%
  count(order_hour_of_day) %>%
  mutate(
    text_label = str_c("Time:",order_hour_of_day,"hr","\nOrders:#",n),
    order_dow = fct_relevel(order_dow,c("Sun","Mon","Tue","Wed","Thu","Fri","Sat"))) %>%
  plot_ly(
    x = ~order_hour_of_day, y = ~n, type = "scatter", color = ~order_dow, mode = "lines",text = ~text_label,alpha = 0.5)
## Warning: `arrange_()` is deprecated as of dplyr 0.7.0.
## Please use `arrange()` instead.
## See vignette('programming') for more help
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.

boxplot

Among the products that have been ordered previously, what kinds of peoducts are relatively easy to be consumed? Or what products do people tend to buy regularly without too much stocking-up?

instacart %>%
  filter(reordered == '1',
         department != "missing") %>%
  mutate(department = reorder(department,days_since_prior_order)) %>%
  plot_ly(
    x = ~department, y = ~days_since_prior_order, type = "box", color = "viridis", alpha = 0.5)
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

bar chart

Which department’s products are the most frequently to be first added into the cart?

instacart %>%
  filter(add_to_cart_order == '1') %>%
  count(department) %>%
  mutate(department = fct_reorder(department, n)) %>% 
  plot_ly(x = ~department, y = ~n, color = ~department, type = "bar", colors = "viridis")